/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author devair
 */
public class TabelaSimbolo extends AbstractTableModel {

    private List<ItemTabelaSimbolo> dados;
    private List<String> nomeColunas;

    public TabelaSimbolo(List<ItemTabelaSimbolo> dados) {

        this.nomeColunas = new ArrayList();
        this.nomeColunas.add("Nome");
        this.nomeColunas.add("Escopo");
        this.nomeColunas.add("Tipo");
        this.nomeColunas.add("Modalidade");
        this.nomeColunas.add("Inicializada");
        this.nomeColunas.add("Usada");
        this.nomeColunas.add("Nº Param");

        //this.nomeColunas = nomeColunas;       
        this.dados = dados;

    }
    
     public TabelaSimbolo() {
        this(new ArrayList<ItemTabelaSimbolo>());      
    }

    @Override
    public int getRowCount() {
        return this.dados.size();
    }

    @Override
    public int getColumnCount() {
        return this.nomeColunas.size();
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return Integer.class;
    }

    @Override
    public String getColumnName(int columnIndex) {

        return this.nomeColunas.get(columnIndex);
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        ItemTabelaSimbolo dado = dados.get(rowIndex);
        Object retorno = null;

        if (this.dados != null) {
            switch (columnIndex) {
                case 0:

                    retorno = dado.getNome();

                    break;
                case 1:

                    retorno = dado.getEscopo();

                    break;

                case 2:

                    retorno = dado.getTipo();

                    break;
                case 3:

                    retorno = dado.getModalidade();

                    break;

                case 4:

                    retorno = (Boolean) dado.getInicializada();

                    break;

                case 5:

                    retorno = (Boolean) dado.getUsada();

                    break;
                case 6:

                    retorno = (Integer) dado.getPosPar();                    
                    
                    break;
            }
        }
        return retorno;
    }

}
